#ifndef COSMOPOLITAN_LIBC_NEXGEN32E_TRAMPOLINE_H_
#define COSMOPOLITAN_LIBC_NEXGEN32E_TRAMPOLINE_H_
#if !(__ASSEMBLER__ + __LINKER__ + 0)

#define TRAMPOLINE(FUNCTION, THUNK)       \
  ({                                      \
    typeof(FUNCTION) *Tramp;              \
    asm(".pushsection .text.trampoline\n" \
        "183:\n\t"                        \
        "mov\t%1,%%eax\n\t"               \
        "jmp\t" #THUNK "\n\t"             \
        ".popsection\n\t"                 \
        "mov\t$183b,%k0"                  \
        : "=r"(Tramp)                     \
        : "i"(FUNCTION));                 \
    Tramp;                                \
  })

#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
#endif /* COSMOPOLITAN_LIBC_NEXGEN32E_TRAMPOLINE_H_ */
